#requires AutoHotkey v1.1
-; UltimateKEYS (for AutoHotkey v1.1).ahk - 2023-09-05
+; UltimateKEYS (for AutoHotkey v1.1).ahk - 2023-12-28
; Website : www.ultimatekeys.info (pieter-degroote.github.io/UltimateKEYS/)
cmpQuad.item["3"] := "{u+2001}" ; em quad
-; Compose : Arrows and Pointers
+; Compose : Arrows and Pointing Triangles
cmpArrow := ComObjCreate("Scripting.Dictionary")
cmpArrow.item["w"] := "{u+25b2}" ; (▲) black up-pointing triangle
cmpDigitEight := ComObjCreate("Scripting.Dictionary")
cmpCapitalP := ComObjCreate("Scripting.Dictionary")
-cmpSemicolon := ComObjCreate("Scripting.Dictionary")
cmpAsterisk := ComObjCreate("Scripting.Dictionary")
cmpExclam := ComObjCreate("Scripting.Dictionary")
cmpQuestion := ComObjCreate("Scripting.Dictionary")
cmpSymbols.item["o"] := "{u+00a7}" ; (§) section sign
cmpCapitalS.item["o"] := "{u+00a7}" ; (§) section sign
cmpSmallT.item["m"] := "{u+2122}" ; (™) trademark symbol
-cmpSemicolon.item["b"] := "{u+2022}" ; (•) bullet
-cmpSemicolon.item[";"] := "{u+2022}" ; (•) bullet
-cmpSemicolon.item["t"] := "{u+2023}" ; (‣) triangular bullet
-cmpSemicolon.item[">"] := "{u+2023}" ; (‣) triangular bullet
-cmpSemicolon.item["h"] := "{u+2043}" ; (⁃) hyphen bullet
-cmpSemicolon.item["-"] := "{u+2043}" ; (⁃) hyphen bullet
-cmpSemicolon.item["w"] := "{u+25e6}" ; (◦) white bullet
-cmpSemicolon.item["o"] := "{u+25e6}" ; (◦) white bullet
cmpAcuteAccent.item["1"] := "{u+2032}" ; (′) prime
cmpAcuteAccent.item["2"] := "{u+2033}" ; (″) double prime
cmpAcuteAccent.item["3"] := "{u+2034}" ; (‴) triple prime
cmpTilde.item["~"] := "{u+2248}" ; (≈) almost equal to
+; Compose : Bullets and Small Geometric Shapes (;)
+
+cmpSemicolon := ComObjCreate("Scripting.Dictionary")
+cmpSemicolon.item["b"] := "{u+2022}" ; (•) bullet
+cmpSemicolon.item["o"] := "{u+25e6}" ; (◦) white bullet
+cmpSemicolon.item["h"] := "{u+2043}" ; (⁃) hyphen bullet
+cmpSemicolon.item["t"] := "{u+2023}" ; (‣) triangular bullet
+cmpSemicolon.item["q"] := "{u+25aa}" ; (▪) black small square
+cmpSemicolon.item["u"] := "{u+25ab}" ; (▫) white small square
+cmpSemicolon.item["w"] := "{u+25b4}" ; (▴) black up-pointing small triangle
+cmpSemicolon.item["a"] := "{u+25c2}" ; (◂) black left-pointing small triangle
+cmpSemicolon.item["s"] := "{u+25be}" ; (▾) black down-pointing small triangle
+cmpSemicolon.item["d"] := "{u+25b8}" ; (▸) black right-pointing small triangle
+cmpSemicolon.item["i"] := "{u+25b5}" ; (▵) white up-pointing small triangle
+cmpSemicolon.item["j"] := "{u+25c3}" ; (◃) white left-pointing small triangle
+cmpSemicolon.item["k"] := "{u+25bf}" ; (▿) white down-pointing small triangle
+cmpSemicolon.item["l"] := "{u+25b9}" ; (▹) white right-pointing small triangle
+cmpSemicolon.item[";"] := "{u+2022}" ; (•) bullet
+
+
; Compose : Vulgar Fractions
cmpDigitOne := ComObjCreate("Scripting.Dictionary")
cmpDiaeresis.item[","] := "{u+201e}" ; („) double low-9 quotation mark
cmpCedillaOgonek.item["'"] := "{u+201a}" ; (‚) single low-9 quotation mark
cmpAcuteAccent.item[","] := "{u+201a}" ; (‚) single low-9 quotation mark
+cmpCedillaOgonek.item[","] := "{u+201a}" ; (‚) single low-9 quotation mark
cmpDiaeresis.item["["] := "{u+201c}" ; (“) left double quotation mark
cmpBracketLeft.item[chr(34)] := "{u+201c}" ; (“) left double quotation mark
cmpDiaeresis.item["]"] := "{u+201d}" ; (”) right double quotation mark
cmpDigitTwo.item["t"] := "{u+26a0}" ; (⚠) warning sign
cmpDigitTwo.item["u"] := "{u+26a1}" ; (⚡) high voltage sign
cmpDigitTwo.item["v"] := "{u+26d4}" ; (⛔) no entry
+cmpDigitTwo.item["w"] := "{u+231a}" ; (⌚) watch
+cmpDigitTwo.item["x"] := "{u+231b}" ; (⌛) hourglass
cmpDigitThree.item["a"] := "{u+2701}" ; (✁) upper blade scissors
cmpDigitThree.item["b"] := "{u+2702}" ; (✂) black scissors
>!/::Send {u+00bf} ; (¿) inverted question mark
>!?::Send {u+2026} ; (…) horizontal ellipsis
->!space::Send {u+00a0} ; non-breaking space (NBSP)
->!+space::Send {u+00a0} ; non-breaking space (NBSP)
+>!space::Send {u+00a0} ; non-breaking space (NBSP)
+>!+space::Send {u+2022} ; (•) bullet
; Configuration : Compose Key Selector
>!`::
+>!~::
>!sc056::
+>!+sc056::
Input, keyA, L1, {bs}{del}{esc}{home}{end}
Input, keyB, L1, {bs}{del}{esc}{home}{end}
Send % cmpCapitalT.item[keyB]
else if (keyA == "P")
Send % cmpCapitalP.item[keyB]
- else if (keyA == ";")
- Send % cmpSemicolon.item[keyB]
else if (keyA == "*")
Send % cmpAsterisk.item[keyB]
else if (keyA == "!")
Send % cmpLessThan.item[keyB]
else if (keyA == ">")
Send % cmpGreaterThan.item[keyB]
+ else if (keyA == ";")
+ Send % cmpSemicolon.item[keyB]
else if (keyA == "1")
Send % cmpDigitOne.item[keyB]
else if (keyA == "2")